package com.itxx.homeWork;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.Scanner;

/*   请编写程序，从控制台接收一个“生日”，格式：yyyy-MM-dd，
       程序要能够计算并打印他来到世界xx天。
       注意：“生日”必须早于“当前日期”，否则提示：生日必须早于当前日期！*/
//创建Scanner对象键盘键入生日
public class Test1 {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入格式：yyyy-MM-dd 的生日");
        String s = sc.nextLine();
        //规定格式为yyyy-MM-dd
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //将String转换为LocalDate格式为yyyy-MM-dd
        LocalDate oldTime = LocalDate.parse(s, pattern);
        //通过Period.between(oldTime, LocalDate.now())  得出距离当前时间的时间
        Period b = Period.between(oldTime, LocalDate.now());

        //判断输入的日期是否早于当前时间
        if (b.getYears() < 0 || b.getMonths() < 0 || b.getDays() < 0) {
            System.out.println("你输入的 生日必须早于当前日期！");
        }
        /*使用ChronoUnit类的提供的枚举*/
        long days = ChronoUnit.DAYS.between(oldTime, LocalDate.now());
        System.out.println("他来到这个世界" + days + "天");


        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //获取输入的时间与时间原点的毫秒值
        Date birthday = sdf.parse(s);
        long birthdaytime = birthday.getTime();
        //获取当前时间与时间远点的毫秒值
        long now = System.currentTimeMillis();
        long sum = (now - birthdaytime);
        System.out.println("他来到这个世界" + (sum / 1000 / 60 / 60 / 24) + "天");


    }
}
